Парсинг форм ============= формат данных принимаемых функцией ``parseForm`` .. code-block:: [ { "key": "body_panel", "components": [ { "label": "Юридическое лицо", "key": "agreementLegalEntity", "properties": { "attribute": "_ECM_contracts:agreementLegalEntity" }, "type": "selectJournal", "input": true, "value": "" ... }, ... ], }, { "key": "footer_panel", "components": [ { "type": "columns", "columns": [ { "components": [ { "label": "Rework", "key": "outcome_Rework", "type": "button", "action": "submit", }, ... ] }, ... ], }, { "label": "Rework", "key": "outcome_Rework", "type": "button", "action": "submit", }, ... ] }, ... ] Получение элементов для отображения в списке свойств: * компоненты из массива первого уровня фильтруются по ключу ``"key": "body_panel"`` * перебираем элементы массива ``components``, фильтруем их по свойству ``"input": true`` * в случае если ``"type": "button"``, элемент отбирается для передачи в функцию рендера, для локализации используется аттрибут ``label``. Элементы с другими типами также отбираются для рендера, исключением яэвляется то что для локализации используется свойство ``attribute`` с обрезанным префиксом '_ECM_' * данные с формой связаны по ключу ``attribute`` * для отображения в интерфейсе используется свойства value, в зависимости от ``type`` форматируется как строка или дата Получение элементов для отображения на панеле согласования(кнопки): * компоненты из массива первого уровня фильтруются по ключу ``"key": "footer_panel"`` * перебираем элементы массива ``columns.components``, фильтруем их по свойству ``"type": button``. Если встречаются элементы с типом ``columns``, необходимо отобрать первый элемент массива в свойстве ``components``. Для локализации используется аттрибут ``label`` * обработчик клика по кнопке ожидает значение из св-ва ``label``